var UIGeneral = (function () {
  var handlePulsate = function () {
    if (!jQuery().pulsate) {
      return
    }

    if (App.isIE8() == true) {
      return // pulsate plugin does not support IE8 and below
    }

    if (jQuery().pulsate) {
      jQuery('#pulsate-regular').pulsate({
        color: '#bf1c56'
      })

      jQuery('#pulsate-once').click(function () {
        $(this).pulsate({
          color: '#399bc3',
          repeat: false
        })
      })

      jQuery('#pulsate-hover').pulsate({
        color: '#5ebf5e',
        repeat: false,
        onHover: true
      })

      jQuery('#pulsate-crazy').click(function () {
        $(this).pulsate({
          color: '#fdbe41',
          reach: 50,
          repeat: 10,
          speed: 100,
          glow: true
        })
      })
    }
  }

  var handleGritterNotifications = function () {
    if (!jQuery.gritter) {
      return
    }

    $('#gritter-sticky').click(function () {
      var unique_id = $.gritter.add({
        // (string | mandatory) the heading of the notification
        title: 'This is a sticky notice!',
        // (string | mandatory) the text inside the notification
        text: 'Lorem ipsum dolor sit amet, consectetur adipiscing elit. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href="#" style="color:#ccc">magnis dis parturient</a> montes, nascetur ridiculus mus.',
        // (string | optional) the image to display on the left
        image: 'resource/metronic/img/avatar1.jpg',
        // (bool | optional) if you want it to fade out on its own or just sit there
        sticky: true,
        // (int | optional) the time you want it to be alive for before fading out
        time: '',
        // (string | optional) the class name you want to apply to that specific message
        class_name: 'my-sticky-class'
      })
      return false
    })

    $('#gritter-regular').click(function () {
      $.gritter.add({
        // (string | mandatory) the heading of the notification
        title: 'This is a regular notice!',
        // (string | mandatory) the text inside the notification
        text: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href="#" style="color:#ccc">magnis dis parturient</a> montes, nascetur ridiculus mus.',
        // (string | optional) the image to display on the left
        image: 'resource/metronic/img/avatar1.jpg',
        // (bool | optional) if you want it to fade out on its own or just sit there
        sticky: false,
        // (int | optional) the time you want it to be alive for before fading out
        time: ''
      })

      return false
    })

    $('#gritter-max').click(function () {
      $.gritter.add({
        // (string | mandatory) the heading of the notification
        title: 'This is a notice with a max of 3 on screen at one time!',
        // (string | mandatory) the text inside the notification
        text: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href="#" style="color:#ccc">magnis dis parturient</a> montes, nascetur ridiculus mus.',
        // (string | optional) the image to display on the left
        image: 'resource/metronic/img/avatar1.jpg',
        // (bool | optional) if you want it to fade out on its own or just sit there
        sticky: false,
        // (function) before the gritter notice is opened
        before_open: function () {
          if ($('.gritter-item-wrapper').length == 3) {
            // Returning false prevents a new gritter from opening
            return false
          }
        }
      })
      return false
    })

    $('#gritter-without-image').click(function () {
      $.gritter.add({
        // (string | mandatory) the heading of the notification
        title: 'This is a notice without an image!',
        // (string | mandatory) the text inside the notification
        text: 'This will fade out after a certain amount of time. Vivamus eget tincidunt velit. Cum sociis natoque penatibus et <a href="#" style="color:#ccc">magnis dis parturient</a> montes, nascetur ridiculus mus.'
      })

      return false
    })

    $('#gritter-light').click(function () {
      $.gritter.add({
        // (string | mandatory) the heading of the notification
        title: 'This is a light notification',
        // (string | mandatory) the text inside the notification
        text: 'Just add a "gritter-light" class_name to your $.gritter.add or globally to $.gritter.options.class_name',
        class_name: 'gritter-light'
      })

      return false
    })

    $('#gritter-remove-all').click(function () {
      $.gritter.removeAll()
      return false
    })
  }

  var handleDynamicPagination = function () {
    $('#dynamic_pager_demo1').bootpag({
      total: 6,
      page: 1
    }).on('page', function (event, num) {
      $('#dynamic_pager_content1').html('Page ' + num + ' content here') // or some ajax content loading...
    })

    $('#dynamic_pager_demo2').bootpag({
      total: 24,
      page: 1,
      maxVisible: 6
    }).on('page', function (event, num) {
      $('#dynamic_pager_content2').html('Page ' + num + ' content here') // or some ajax content loading...
    })
  }

  return {
    // main function to initiate the module
    init: function () {
      handlePulsate()
      handleGritterNotifications()
      handleDynamicPagination()
    }

  }
}())
